有一種資訊系統,不能用「開發完成」來形容。
比較接近的說法是:
它還活著。
而且活得很好。
至少今天早上大家還能登入、查資料、印表格、辦事情。
至於它是怎麼活到今天的,就不要問得太細。
很多老系統剛出生的時候,並沒有什麼原罪。
當年的需求可能很單純:
「我們需要一套系統來處理這件事。」
於是找了一套當時合理的技術,做了一套系統。
能登入。
能輸入。
能查詢。
能列印。
大家用了幾年,覺得不錯。
這就是那段木頭。
問題通常不是出在第一套系統。
真正精彩的故事,都是從第二個需求開始的。
某一天,有人說:
「原本那套很好用,可是我們現在多了一個新業務。」
大家研究了一下。
改原來的系統?
風險有點高。
找不到當年的工程師。
文件也不完整。
而且那套系統現在每天都有人用。
於是有人提出了一個非常合理的方案:
不要動它,我們旁邊再做一個。
合理。
真的很合理。
於是第一朵香菇長出來了。
新系統需要一些舊資料,所以接一下原來的資料。
事情解決。
大家下班。
幾年後,又來了一個需求。
新的承辦人看了一下:
「咦,這裡已經有一套新系統了,那我是不是接這個就好?」
可是這套新系統又不是完全符合需求。
改它?
還是有風險。
而且原本那一朵香菇,現在也已經變成正式業務了。
於是最安全的做法再次出現:
不要動它,我們旁邊再做一個。
於是第二朵香菇也出現了。
它跟第一朵共用一些東西。
又另外保存一些自己的東西。
偶爾還要回頭問那段木頭:
「你那邊現在的資料是多少?」
你得到的是香菇農場。
某一天,你被叫來看這套系統。
對方可能會很平靜地告訴你:
「這是我們的主系統。」
你看了五分鐘之後問:
「那旁邊這個呢?」
「那個是後來加的。」
「這個呢?」
「那是另外一個單位做的。」
「這邊又是什麼?」
「這個以前有用,現在好像還有一部分在跑。」
「那這個?」
「這個不能關。」
「為什麼?」
「不知道,反正不能關。」
這個時候,你會慢慢理解一件事情。
你接手的已經不是一套系統。
你接手的是一段歷史。
從今天回頭看,很多架構都會讓人很想問:
「當年為什麼要這樣做?」
但如果真的回到當年的場景,答案往往非常樸實。
因為當時不能停機。
因為沒有預算重做。
因為新需求很急。
因為舊廠商已經不在了。
因為沒有人敢改原系統。
因為只需要先把這個功能做出來。
因為下個月就要上線。
於是每一代人都做了一個當下很合理的決定:
不要碰舊的,在旁邊加新的。
這個決定做一次,叫做應急。
做五次,叫做相容。
做十次,叫做歷史包袱。
做四十年,就會形成一種很有生命力的生態系。
真正的治理問題是:
沒有人知道哪一朵香菇算正式。
有的資料以這邊為準。
有的資料要看另外一邊。
某個欄位兩邊都有。
某個流程看起來已經搬走了,實際上舊系統每天晚上還會做一件沒有人記得的事情。
更精彩的是,每一個時代都有自己的命名方式。
所以你問:
「哪一套是主系統?」
得到的答案可能會因為你問的人不同而不同。
使用者說 A。
資訊人員說 B。
廠商說 C。
主管說:
「就是大家現在用的那個啊。」
完全正確。
也完全沒有回答問題。
老系統本身其實不一定可怕。
真正讓事情開始有趣的,是:
人走了,系統留下來。
第一代的人離職。
第二代接手的時候,知道七成。
第三代知道五成。
第四代知道哪幾個按鈕不能按。
到了第五代,組織裡開始出現一種特殊知識:
「這個平常不要動。」
「月底前不要重開。」
「那台機器沒有壞就不要碰。」
「這個帳號大家都知道。」
「這張表不要直接改。」
你問為什麼。
大家會陷入短暫沉默。
然後有人回答:
「以前的人就是這樣交代的。」
恭喜。
這已經不只是資訊系統。
這是一種口述歷史。
看到這種環境,最容易出現一句話:
「這太亂了,我們全部整理掉。」
這句話通常充滿正義。
也充滿風險。
因為你眼前看到的是「亂」。
但對組織來說,那些亂七八糟的東西,可能正共同維持著:
薪資、學籍、訂單、帳務、門禁、報表、申報,或者某一個一年只跑一次、但少跑一次就會出大事的流程。
所以接手這種系統,第一件事情通常不是重構。
也不是換技術。
更不是舉辦「誰寫的」追究大會。
第一件事情是:
先搞清楚這座香菇園到底怎麼活著。
誰提供資料。
誰修改資料。
誰相信誰。
誰每天跑。
誰每月跑。
誰一年才醒來一次。
以及最重要的一件事:
拔掉哪一朵,其他香菇會一起死。
這類系統最需要的,不一定是一個更厲害的框架。
而是一份老老實實的盤點。
我們現在知道什麼?
不知道什麼?
哪些事情已經確認?
哪些只是大家一直這樣認為?
哪些系統還有人使用?
哪些資料有兩個來源?
哪些東西只是看起來沒用了?
這些問題聽起來不像資安。
但它們其實非常接近資安的核心。
因為如果你連:
「這是什麼?」
都回答不了,
後面的:
「誰可以用?」
「誰可以改?」
「出了事找誰?」
「能不能關?」
「資料從哪裡來?」
自然也很難回答。
老系統能活四、五十年,本身其實是一件很厲害的事情。
代表它真的解決過問題。
而且解決了很久。
問題只是在於:
每一代都留下了一點東西,
卻沒有每一代都留下足夠的說明。
於是我們今天看到的,才會是一段木頭上:
有大香菇。
有小香菇。
有已經乾掉但沒人敢拔的香菇。
有不知道從哪裡冒出來的香菇。
還有一朵大家都說沒人在用,
但你關掉之後,全公司電話立刻響起來的香菇。
這就是這個系列的第一個事故現場。
它沒有駭客。
沒有零日漏洞。
沒有電影裡那種滿螢幕亂跑的綠色字。
只有一套活得太久、長得太努力,而且一直沒有人真正有機會停下來整理的資訊系統。
而我們接下來要做的事情,也不是把香菇全部拔掉。
是先弄清楚:
這到底是一段木頭,還是一整個生態系。
歡迎來到第一則資訊安全——
奇聞車失事。